/**
 * 演示数组的使用。
 * 数组：用相同名称标记的一组相同类型元素的集合。
 * 特征：1.元素类型相同；2.内存连续分配；3.长度固定。
 * 分类：分为一维数组和多维数组
 */
public class ArrayDemo {

    public static void main(String[] args) {
        // 演示一维数组的使用（数组的定义/创建；数组初始化；数组元素的访问；数组的遍历；数组功能）
        // 数组定义、创建
        int[] arr = new int[10]; // 方案1：只创建长度，不初始化
        String[] names = new String[]{"张三", "李四"};  // 方案2：定义数组的同时，采用固定元素初始化
        double[] moneys = {3.33, 4.44, 5.55}; // 方案3：定义数组的同时，采用固定元素初始化
        // 元素访问语法：数组名[索引]。索引很多教材也称为下标，它从0开始。
        System.out.println(names[1]); // 访问数组的第二个元素
        // 遍历1：循环赋值
        for (int i = 0; i < 10; i++) {
            arr[i] = (i + 1) * (i + 1); // 将来可以替换为键盘输入、数据库读取、随机数等等
        }
        // 遍历2：循环显示
        System.out.println("数组遍历结果：");
        for (int i = 0; i < 10; i++) {
            System.out.println(arr[i]);
        }
        // 数组常见功能：1.求最值；2.排序
        // 课堂练习2：参考下面的程序，给10个整数的数组求最小值
        int[] scores = {1, 8, 8, 9, 18, -1, 3, 7, 6, -18, 99};
        int max = Integer.MIN_VALUE; // 如果是求最大值，那么中间变量一定要尽可能小
        // 数组的长度：数组名.length
        for (int i = 0; i < scores.length; i++) {
            if (scores[i] > max) {
                max = scores[i]; // 更换守擂台的变量
            }
        }
        System.out.println("最大值是：" + max);
    }
}
